function calculator(num1, operator, num2) {
    
    if (isNaN(num1) || isNaN(num2)) {
        throw new Error('操作数错误');
    }    
  
    var result;
    switch (operator) {
      case '+':
        result = num1 + num2;
        break;
      case '-':
        result = num1 - num2;
        break;
      case '*':
        result = num1 * num2;
        break;
      case '/':
        if (num2 === 0) {
          throw new Error('除数不能为0');
        }
        result = num1 / num2;
        break;
      default:
        throw new Error('操作符错误');
    }
    return result;
}
  
// 测试表达式中包含数字和操作符的情况
console.log(calculator(1 ,'+', 2)); // 输出: 3
console.log(calculator(3 ,'-', 2)); // 输出: 1
console.log(calculator(2 ,'*', 3)); // 输出: 6
console.log(calculator(4 ,'/', 2)); // 输出: 2
  
// 测试表达式中操作数错误的情况
try {
    var a;
    calculator(a ,'+', 2);
} catch (error) {
    console.error(error.message); // 输出: 操作数错误
  }
  
try {
    var b;
    calculator(1 ,'-', b);
} catch (error) {
    console.error(error.message); // 输出: 操作数错误
  }
  
// 测试表达式中操作符错误的情况
try {
    calculator(1 ,'&', 2);
} catch (error) {
    console.error(error.message); // 输出: 操作符错误
  }
  
// 测试表达式中除数为0的情况
try {
    calculator(1 ,'/', 0);
} catch (error) {
    console.error(error.message); // 输出: 除数不能为0
  }
  